package cn.lizemin.Responsibility.version0;

import cn.lizemin.Responsibility.version0.entity.Approver;
import cn.lizemin.Responsibility.version0.entity.CFO;
import cn.lizemin.Responsibility.version0.entity.Manager;
import cn.lizemin.Responsibility.version0.entity.Staff;

/**
 * @author lzm
 * @version 1.0
 * @description: 流程审批
 *
 * 存在的缺陷
 *      1.需要new出多个对象才能够完成整个流程
 *      2.有种被踢皮球的感觉
 *      3.如果需要灵活的按照新的顺序来组装不同的审批节点，需要修改if-else
 *      4.增加审批节点，需要增加新的if分支
 *
 * @date 2022/5/2 9:47
 */
public class Client {

    /**
     * 程序的入口
     */
    public static void main(String[] args) {
        //1.设置节点间的处理流程,
        Approver staff = new Staff("张飞");
        staff.submitNextApprover(new Manager("关羽"))
                .submitNextApprover(new CFO("刘备"));

        // 出差花费1000元,
        // 只需要找财务专员一个人就可以了，
        // 不管最后是谁审批的，但是我只需要和财务专员一个人打交道即可，我甚至不需要知道
        // 背后的流程
        staff.approve(1000);

        System.out.println("============================");
        // 出差花费4000元,
        staff.approve(4000);

        System.out.println("============================");
        // 出差花费8000元,
        staff.approve(8000);




    }

}
